package wuziqi;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件存储工具类
 * 负责排行榜数据的文件读写操作
 */
public class FileStorageUtil {

    // 排行榜数据存储文件路径，使用txt文本格式
    private static final String FILE_PATH = "wuziqi_rankings.txt";

    /**
     * 保存排行榜数据到文件
     * 文件格式为文本，每行一条记录，字段间用逗号分隔
     * 格式：局数,步数,结果
     *
     * @param rankings 排行榜数据列表
     */
    public static void saveRankings(List<paihangbang> rankings) {
        // 使用try-with-resources自动关闭资源
        try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_PATH))) {
            // 遍历排行榜列表
            for (paihangbang ph : rankings) {
                // 按格式写入文件
                writer.println(ph.getJushu() + "," + ph.getBushu() + "," + ph.getJieguo());
            }
        } catch (IOException e) {
            // 异常处理：输出错误信息
            System.err.println("保存排行榜数据失败: " + e.getMessage());
        }
    }

    /**
     * 从文件加载排行榜数据
     * 读取文本文件并解析为排行榜对象列表
     *
     * @return 排行榜数据列表，如果文件不存在则返回空列表
     */
    public static List<paihangbang> loadRankings() {
        // 初始化排行榜列表
        List<paihangbang> rankings = new ArrayList<>();
        File file = new File(FILE_PATH);

        // 如果文件不存在，直接返回空列表
        if (!file.exists()) {
            return rankings;
        }

        // 使用try-with-resources自动关闭资源
        try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) {
            String line;
            // 逐行读取文件
            while ((line = reader.readLine()) != null) {
                // 使用逗号分割字段
                String[] parts = line.split(",");
                // 验证字段数量是否符合预期
                if (parts.length == 3) {
                    // 创建排行榜对象并设置属性
                    paihangbang ph = new paihangbang();
                    ph.setJushu(Integer.parseInt(parts[0]));
                    ph.setBushu(Integer.parseInt(parts[1]));
                    ph.setJieguo(parts[2]);
                    // 添加到排行榜列表
                    rankings.add(ph);
                }
            }
        } catch (IOException e) {
            // 异常处理：输出错误信息
            System.err.println("加载排行榜数据失败: " + e.getMessage());
        }

        return rankings;
    }
}